﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
using System.Xml;
using _300Report.Annotations;


namespace _300Report.domain
{

   public  class Hero:INotifyPropertyChanged
   {

      

       private string _solidColorBrush;

       private string _heroIconUri;


       public int HeroId { get; set; }
       public  string HubTileBackGround
       {
           get { return _solidColorBrush; }
           set
           {
               _solidColorBrush = value;
               OnPropertyChanged("HubTileBackGround");
           
           }
       }

       public string HeroName { get; set; }

       public string HeroIconUri
       {
           get { return _heroIconUri; }
           set
           {
               _heroIconUri = value;
               OnPropertyChanged("HeroIconUri");
           }
       }

       public string HeroImg { get; set; } //大图

       public string HeroKeyWords { get; set; }
        public string HeroType { get; set; }

        public string HeroPrice { get; set; }
        public string HeroDescription { get; set; }
        public  List<string> HeroAttribute { get; set; } //英雄属性
        public List<Skill> Skills { get; set; } //英雄技能

        public HeroUseCategory HeroUseCategory { get; set; }//使用策略

        public List<Strategy> Strategies { get; set; }

       public Hero()
       {

       }


       public event PropertyChangedEventHandler PropertyChanged;

       [NotifyPropertyChangedInvocator]
       protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
       {
           PropertyChangedEventHandler handler = PropertyChanged;
           if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
       }

       protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] String propertyName = null)
       {
           if (object.Equals(storage, value)) return false;
           storage = value;
           this.OnPropertyChanged(propertyName);
           return true;
       }
    }
}
